let number = {
  twoWay: true,
  bind: function (el) {
    const input = el.getElementsByTagName('input')[0]
    input.addEventListener('blur', function () {
      // let value = formatNumber(el.value,2,0)
      let value

      (function () {
        value = formatNumber(input.value, 1, 0)
        return value
      })()
      input.value = value
      el.__vue__.$emit('change', input.value)
    })
  },
  update: function (el, binding, vnode) {
    const input = el.getElementsByTagName('input')[0]

    if (input.value !== '') {
      input.value = input.value.replace(/[^0-9.]+/g, '')
      el.$emit('change', input.value)
    }
  }
}

/**
* 将数值四舍五入后格式化.
* @param num 数值(Number或者String)
* @param cent 要保留的小数位(Number)
* @param isThousand 是否需要千分位 0:不需要,1:需要(数值类型);
* @return 格式的字符串,如'1,234,567.45'
* @type String
*/
function formatNumber (num, cent, isThousand) {
  num = num.toString().replace(/\$|\,/g, '')

  // 检查传入数值为数值类型
  if (isNaN(num)) { num = '0' }

  // 获取符号(正/负数)
  let sign = (num == (num = Math.abs(num)))
  // + 0.50000000001
  num = Math.floor(num * Math.pow(10, cent)) // 把指定的小数位先转换成整数.多余的小数位四舍五入
  let cents = num % Math.pow(10, cent) // 求出小数位数值
  num = Math.floor(num / Math.pow(10, cent)).toString() // 求出整数位数值
  cents = cents.toString() // 把小数位转换成字符串,以便求小数位长度

  // 补足小数位到指定的位数
  while (cents.length < cent) { cents = '0' + cents }

  if (isThousand) {
    // 对整数部分进行千分位格式化.
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) { num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3)) }
  }

  if (cent > 0) { return (((sign) ? '' : '-') + num + '.' + cents) } else { return (((sign) ? '' : '-') + num) }
}
export {
  number
}
